package com.heima.article.service;

import com.baomidou.mybatisplus.extension.api.R;
import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.article.dtos.ArticleDto;
import com.heima.model.article.dtos.ArticleHomeDto;
import com.heima.model.article.dtos.CollectionBehaviorDto;
import com.heima.model.article.pojos.ApArticle;
import com.heima.model.behavior.dtos.LikeBehaviorDto;
import com.heima.model.behavior.dtos.ReadBehaviorDto;
import com.heima.model.common.dtos.PageResponseResult;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.wemedia.dtos.GraphicDataParametersDto;
import com.heima.model.wemedia.dtos.WmCommentDto;
import com.heima.model.wemedia.pojos.NewPage;

import java.util.Date;
import java.util.Map;

/**
 * @author jack
 * @data 2024 11:30
 */
public interface ApArticleService extends IService<ApArticle> {
    /**
     * app文章加载
     *
     * @param homeDto 筛选条件
     * @param type  控制开关：1 表示加载首页和加载更多  2:表示加载更新
     * @return
     */
    ResponseResult load(ArticleHomeDto homeDto, int type);

    /**
     * 同步自媒体文章到app端
     *
     * @param articleDto
     * @return
     */
    ResponseResult saveOrUpdateArticle(ArticleDto articleDto);

    /**
     * 文章上下架
     *
     * @param map
     */
    void downOrUpArticle(Map map);

    PageResponseResult getComments(WmCommentDto wmCommentDto);

    ResponseResult addLike(LikeBehaviorDto likeBehaviorDto);

    /**
     * 读取行为
     *
     * @param readBehaviorDto 读取行为dto
     * @return {@link ResponseResult}
     */
    ResponseResult readBehavior(ReadBehaviorDto readBehaviorDto);

    /**
     * 添加收藏数量
     *
     * @param collectionBehaviorDto 集合行为dto
     * @return {@link ResponseResult}
     */
    ResponseResult addCollection(CollectionBehaviorDto collectionBehaviorDto);

    /**
     * 添加评论
     *
     * @param articleId 文章ID
     * @return
     */
    ResponseResult addComment(Long articleId);


    /**
     * 图形和文本数据
     *
     * @param graphicDataParametersDto 图形数据参数dto
     * @return {@link ResponseResult}
     */
    ResponseResult graphicAndTextualData(GraphicDataParametersDto graphicDataParametersDto);

    /**
     * 查询图文页面列表
     *
     * @param newPageDto 新页面dto
     * @return {@link ResponseResult}
     */
    PageResponseResult newPage(NewPage newPageDto);

    void deletingCommentsReducesComments(Long entryId, Long count);
}
